#ifndef ARBREBINAIRE_H_GUARD
#define ARBREBINAIRE_H_GUARD

#define MIN(x, y) (((x) < (y)) ? (x) : (y))

#define SCREEN_WIDTH 700
#define SCREEN_HEIGHT 700
#define SCREEN_BPP 32

typedef struct ArbreBinaire* arbre;

struct ArbreBinaire
{
	char etiquette;
	int valeur;
	int hauteur;
	arbre pere, filsg, filsd;
	SDL_Surface* support;
	int xCurrent;
	int yCurrent;
	int currentRayonCercle;
};

arbre creerArbre(char, int, SDL_Surface*);
int estFeuille(arbre);
int getHauteur(arbre);
void setHauteurs(arbre);
int getDesequilibre(arbre);
void parcoursPrefix(arbre);
void drawArbreBinaire(SDL_Surface*, arbre, int, int, int, int, int, int, int);
void rotationGauche(arbre);
void rotationDroite(arbre);
void equilibrer(arbre, arbre);
arbre rechercherArbre(arbre, char);
arbre insererArbre(arbre, arbre);
arbre supprimerArbre(arbre, arbre);

#endif